Pinvon's Blog

所见, 所闻, 所思, 所想

超文本传输协议 HTTP

www

www(万维网)是一个资料空间, 在这个空间中, 每个有用的事物, 都称为一个资源, 并由一个唯一的 URL 所标识, 这些资源通过 HTTP 协议传送给用户, 用户通过点击链接来获取资源. HTML 使得 www 页面的设计者可以方便地用一个超链接从本页面跳转到任何一个 www 页面.

www 的组成:

  • URL(统一资源定位符): 唯一标识 www 上的各种资源. 其形式为 <协议>://<主机>:<端口>/<路径>, <协议> 一般是 http, ftp 等, <主机> 可以是域名, 也可以是 IP.
  • HTTP(超文本传输协议): 使用 TCP 进行可靠传输.
  • HTML(超文本标记语言): 使用约定的标记对页面上的各种信息和格式进行描述.

http

http 协议定义了浏览器如何向 www 服务器请求 www 资源, 以及 www 服务器如何将这些资源传送给浏览器.

http 执行过程

  • 获得 IP 地址(如果 <主机> 是域名, 需要解析).
  • 三次握手建立 TCP 连接.
  • 浏览器向服务器发送 http 请求, 请求获取某 web 页面内容.
  • 服务器构建信息, 通过 http 响应返回给浏览器.
  • 浏览器解析信息, 显示给用户.
  • 四次挥手释放 TCP 连接.

http 特点

http 协议是无状态的, 意思就是服务器不知道哪个客户访问过自己. 这个特性简化了服务器的特性, 使得服务器更容易支持大量并发的 http 请求.

在实际应用中, 通常使用 Cookie+Database 的方法来跟踪用户的活动. Cookie 是一个存储在用户主机中的文本文件, 里面含有一串识别码, 用来标识不同的用户. 服务器根据 Cookie 就能从数据库中查询到该用户的活动记录.

HTTP/1.1 以后, 开始支持持久连接. 持久连接与非持久连接的区别:

  • 非持久连接: 对于网页的每一个元素对象, 都要单独建立一个 TCP 连接.
  • 持久连接: www 服务器在发送响应后仍然保持这条连接, 使同一个客户和服务器可以继续在这条连接上传送后续的 http 请求和响应.

对于持久连接, 又分为流水线和非流水线两种方式. HTTP/1.1 使用流水线方式.

  • 非流水线: 客户端在收到前一个响应后都能发出下一个请求.
  • 流水线: 客户端可以每遇到一个对象引用, 就发出一个请求.

http 报文结构

请求报文: 14.png

响应报文: 15.png

可以看出, 这两种报文仅在开始行不同.

16.png

Figure 1: HTTP 方法

17.png

Figure 2: HTTP 状态码

Comments

使用 Disqus 评论
comments powered by Disqus